package com.facade;

import java.io.Serializable;
import java.util.List;

import com.dao.EnderecoDAO;
import com.model.Endereco;

public class EnderecoFacade implements Serializable{
	private static final long serialVersionUID = 1L;
	
	private EnderecoDAO enderecoDAO = new EnderecoDAO();

	public void createEndereco(Endereco endereco) {
		enderecoDAO.beginTransaction();
		enderecoDAO.save(endereco);
		enderecoDAO.commitAndCloseTransaction();
	}

	public void updateEndereco(Endereco endereco) {
		enderecoDAO.beginTransaction();
		Endereco persistedEndereco = enderecoDAO.find(endereco.getId());
		persistedEndereco.setBairro(endereco.getBairro());
		persistedEndereco.setCep(endereco.getCep());
		persistedEndereco.setComplemento(endereco.getComplemento());
		persistedEndereco.setLogradouro(endereco.getLogradouro());
		persistedEndereco.setMunicipio(endereco.getMunicipio());
		persistedEndereco.setNumero(endereco.getNumero());
		persistedEndereco.setTipoLogradouro(endereco.getTipoLogradouro());
		persistedEndereco.setUf(endereco.getUf());
		
		
		enderecoDAO.update(persistedEndereco);
		enderecoDAO.commitAndCloseTransaction();
	}

	public Endereco findEndereco(int enderecoId) {
		enderecoDAO.beginTransaction();
		Endereco endereco = enderecoDAO.find(enderecoId);
		enderecoDAO.closeTransaction();
		return endereco;
	}

	public List<Endereco> listAll() {
		enderecoDAO.beginTransaction();
		List<Endereco> result = enderecoDAO.findAll();
		enderecoDAO.closeTransaction();
		return result;
	}

	public void deleteEndereco(Endereco endereco) {
		enderecoDAO.beginTransaction();
		Endereco persistedEndereco = enderecoDAO.findReferenceOnly(endereco.getId());
		enderecoDAO.delete(persistedEndereco);
		enderecoDAO.commitAndCloseTransaction();
	}
}